#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Experimental.Credit
{
     // <summary> 
	// ! Loss Distribution for Homogeneous Pool  Loss distribution for equal volumes but varying probabilities of default.  The method builds the exact loss distribution for a homogeneous pool of underlyings iteratively by computing the convolution of the given loss distribution with the "loss distribution" of an additional credit following  Xiaofong Ma, "Numerical Methods for the Valuation of Synthetic Collateralized Debt Obligations", PhD Thesis, Graduate Department of Computer Science, University of Toronto, 2007 http://www.cs.toronto.edu/pub/reports/na/ma-07-phd.pdf (formula 2.1)  avoiding numerical instability of the algorithm by  John Hull and Alan White, "Valuation of a CDO and nth to default CDS without Monte Carlo simulation", Journal of Derivatives 12, 2, 2004  \ingroup probability
	// </summary>
    [Guid ("BB496C58-2498-493b-9419-AC88590B3734"),ComVisible(true)]
	public interface ILossDistHomogeneous : Cephei.QL.Experimental.Credit.ILossDist
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 UInt64 Buckets {get;}
        
		 Cephei.IVector<Double> ExcessProbability {get;}
        
		 Double Maximum {get;}
        
		 Cephei.IVector<Double> Probability {get;}
        
		 UInt64 Size {get;}
        
		 Double Volume {get;}
    }

    // <summary> 
	// ! Loss Distribution for Homogeneous Pool  Loss distribution for equal volumes but varying probabilities of default.  The method builds the exact loss distribution for a homogeneous pool of underlyings iteratively by computing the convolution of the given loss distribution with the "loss distribution" of an additional credit following  Xiaofong Ma, "Numerical Methods for the Valuation of Synthetic Collateralized Debt Obligations", PhD Thesis, Graduate Department of Computer Science, University of Toronto, 2007 http://www.cs.toronto.edu/pub/reports/na/ma-07-phd.pdf (formula 2.1)  avoiding numerical instability of the algorithm by  John Hull and Alan White, "Valuation of a CDO and nth to default CDS without Monte Carlo simulation", Journal of Derivatives 12, 2, 2004  \ingroup probability Factory
	// </summary>
   	[ComVisible(true)]
    public interface ILossDistHomogeneous_Factory // : Collection_Factory<ILossDistHomogeneous, ICell<ILossDistHomogeneous>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ILossDistHomogeneous Create (UInt64 nBuckets, Double maximum, Microsoft.FSharp.Core.FSharpOption<Double> epsilon);
    }
}

